package com.example.demo6;

/**
 * 案例六：手写链表,反转链表(力扣网)
 */
public class Test {
    public static void main(String[] args) {
        // 需求：给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 请你反转从位置 left 到位置 right 的链表节点,并返回 反转后的链表
        // 例如：
        // 比如 head 指向的链表内容大致是 1,2,3,4,5 , left = 2, right = 4 反转后的链表就是 1,4,3,2,5
        // 如果链表只有一个节点：head指向的是 5  ，left = 1, right = 1 反转后的链表就还是 5
        // 1.设计一个Node泛型类,用于代表链表的结点每个结点包含（数据data,和下一个结点的地址值next） 3
        // 2.开发一个类叫MyLinkedList,提供一个add方法可以让用户添加链表的结点,直到用户输入exit,则返回链表（返回链表实际上是返回链表的头结点） 5
        // 3.提供一个reverse方法,接收头指针 head 和两个整数 left 和 right ,其中 left <= right,按上面的要求进行反转。反转后,返回新的链表 9
        // 4.提供一个forEach方法,接收新链表,并对其进行遍历输出 5
        MyLinkedList<String> list = new MyLinkedList<>();
        MyLinkedList.Node<String> head = list.add();
        // list.forEach(head);

        MyLinkedList.Node<String> head2 = list.reverse(head, 2, 5);
        list.forEach(head2);
    }
}
